home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / ISSUE13 / CONSTRUC / REPORTFM.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1996-08-15  |  3.4 KB  |  128 lines

  1. unit Reportfm;
  2. interface
  3. uses
  4.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  5.   StdCtrls, Forms, DBCtrls, DB, Buttons, Tabs, ExtCtrls, DBTables, Mask;
  6.  
  7. Type
  8.   TReportForm = class(TForm)
  9.     ScrollBox: TScrollBox;
  10.     Label1: TLabel;
  11.     EditReportDate: TDBEdit;
  12.     Label2: TLabel;
  13.     EditReportedBy: TDBEdit;
  14.     Label3: TLabel;
  15.     EditReportSystem: TDBEdit;
  16.     Label4: TLabel;
  17.     Label5: TLabel;
  18.     Label6: TLabel;
  19.     Label7: TLabel;
  20.     Label8: TLabel;
  21.     EditFixDate: TDBEdit;
  22.     Label9: TLabel;
  23.     EditFixedBy: TDBEdit;
  24.     Label10: TLabel;
  25.     EditReportSeeAlso: TDBEdit;
  26.     Label11: TLabel;
  27.     EditVerifyDate: TDBEdit;
  28.     Label12: TLabel;
  29.     EditVerifiedBy: TDBEdit;
  30.     DBNavigator: TDBNavigator;
  31.     Panel1: TPanel;
  32.     DataSource1: TDataSource;
  33.     Panel2: TPanel;
  34.     Table1: TTable;
  35.     Notebook1: TNotebook;
  36.     TabSet1: TTabSet;
  37.     DBMemo1: TDBMemo;
  38.     DBMemo2: TDBMemo;
  39.     DBMemo3: TDBMemo;
  40.     SpeedButton1: TSpeedButton;
  41.     DBMemo4: TDBMemo;
  42.     DBComboBox1: TDBComboBox;
  43.     DBComboBox2: TDBComboBox;
  44.     DBComboBox3: TDBComboBox;
  45.     procedure FormCreate(Sender: TObject);
  46.     procedure DBNavigatorClick(Sender: TObject; Button: TNavigateBtn);
  47.     procedure TabSet1Click(Sender: TObject);
  48.     procedure SpeedButton1Click(Sender: TObject);
  49.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  50.   private
  51.     { private declarations }
  52.   public
  53.     { public declarations }
  54.   end;
  55.  
  56. {$IFDEF WIN32}
  57. var
  58. {$ELSE}
  59. Const
  60. {$ENDIF}
  61.   ReportForm: TReportForm = nil;
  62.  
  63. implementation
  64. uses IniFiles, DbiTypes, DbiProcs, DBConsts;
  65.  
  66. {$R *.DFM}
  67.  
  68.   function CurrentRecordNumber(DataSet: TDataSet): LongInt;
  69.   { Gives the current recordnumber as result for dBase/Paradox tables only }
  70.   var CursorProps: CurProps;
  71.       RecordProps: RECProps;
  72.   begin
  73.     Result := 0;
  74.     with DataSet do
  75.     try
  76.       if State = dsInactive then DBError(SDataSetClosed);
  77.       Check(DbiGetCursorProps(Handle, Cursorprops));
  78.       UpdateCursorPos;
  79.       Check(DbiGetRecord(Handle, dbiNOLOCK, nil, @RecordProps));
  80.       case CursorProps.iSeqNums of
  81.         0: Result := RecordProps.iPhyRecNum; {dBase}
  82.         1: Result := RecordProps.iSeqNum   {Paradox}
  83.       end
  84.     except
  85.       { skip errors - return 0 }
  86.     end
  87.   end;
  88.  
  89. procedure TReportForm.FormCreate(Sender: TObject);
  90. begin
  91.   TabSet1.Tabs := NoteBook1.Pages;
  92.   with TIniFile.Create('c:\windows\delphi.ini') do
  93.   begin
  94.     Table1.DatabaseName := ReadString('bert','reports','C:\PROGRA~1\BORLAND\DELPHI~1.0\DRBOB');
  95.     WriteString('bert','reports',Table1.DatabaseName);
  96.     Table1.TableName := 'REPORT.DB';
  97.     Table1.Open;
  98.     Free
  99.   end;
  100.   Panel1.Caption := Format('Report %d/%d',
  101.                    [CurrentRecordNumber(Table1),Table1.RecordCount])
  102. end;
  103.  
  104. procedure TReportForm.DBNavigatorClick(Sender: TObject; Button: TNavigateBtn);
  105. begin
  106.   if (Button = nbInsert) then { insert = new key }
  107.     Table1.Fields[0].AsInteger := Succ(Table1.RecordCount);
  108.   Panel1.Caption := Format('Report %d/%d',
  109.                    [CurrentRecordNumber(Table1),Table1.RecordCount])
  110. end;
  111.  
  112. procedure TReportForm.TabSet1Click(Sender: TObject);
  113. begin
  114.   Notebook1.PageIndex := TabSet1.TabIndex
  115. end;
  116.  
  117. procedure TReportForm.SpeedButton1Click(Sender: TObject);
  118. begin
  119.   ModalResult := mrOK
  120. end;
  121.  
  122. procedure TReportForm.FormClose(Sender: TObject; var Action: TCloseAction);
  123. begin
  124.   Table1.Close
  125. end;
  126.  
  127. end.
  128.